/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package administracaoHospitalar;

import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author Andre
 */
class ListaDePedidos {

    private List[] pedidos;
    private static int prioridadeMinima = 10;

    public ListaDePedidos() {
        pedidos = new List[prioridadeMinima];
        for (int prioridade = 0; prioridade < prioridadeMinima; prioridade++) {
            pedidos[prioridade] = new LinkedList();
        }
    }

    public void entraPedido(Pedido umPedido, int prioridade) {
        if (pedidos[prioridade].size() == 0) {
            pedidos[prioridade].add(umPedido);
        } else if (umPedido instanceof PedidoDeMedicamento) {
            int posicaoParaInsercao = 0;
            for (int pedido = pedidos[prioridade].size() - 1; pedido >= 0; pedido--) {
                Pedido temporario = (Pedido) pedidos[prioridade].get(pedido);
                if (temporario instanceof PedidoDeMedicamento) {
                    posicaoParaInsercao = pedido + 1;
                    break;
                }
            }
            pedidos[prioridade].add(posicaoParaInsercao, umPedido);
        } else if (umPedido instanceof PedidoDeSupremento) {
            pedidos[prioridade].add(umPedido);
        }
    }

    public String toString(){
        StringBuffer sb = new StringBuffer(1024);
        for(int prioridade=0;prioridade<pedidos.length;prioridade++){
            sb.append("Prioridade "+prioridade+": ");
            for(int pedido=0;pedido<pedidos[prioridade].size();pedido++){
                Pedido umPedido = (Pedido)pedidos[prioridade].get(pedido);
                sb.append(umPedido);
                sb.append("; ");
            }
            sb.append("\n");
        }
        return sb.toString();
    }

}
